# 以标准化方式从数据表中提取信息 前面的章节中,我们介绍了数据源和数据源的概念,并且介绍了如何往数据源中填充金融数据。在这一章节中,我们将介绍如何从数据源中提取对我们有用的信息,而不仅仅是读取数据。 `QTEASY`数据管理模块: ![数据获取模块结构](img/InformationExtraction.png) ## 信息 != 数据 在量化交易中,我们需要准备大量的金融数据,然而,数据并不是最终的目的,我们需要从数据中提取有用的信息。在交易策略中,我们使用这些信息作出交易决策。 信息不等于数据,有些信息是可以直接从数据表中读出来的,比如股票的收盘价,开盘价等。但是,有些信息是需要通过一定的计算才能得到的,比如股票的复权价格等。 例如,我们在交易策略中需要用到股票的前复权价格,我们知道,复权价格是用股票的价格以及复权因子计算得到的,分别保存在下面两张表中: - `stock_daily`:股票日K线行情表,包含了股票的开盘价、收盘价、最高价、最低价等信息。 - `stock_adj_factor`:股票复权因子表,包含了股票的复权因子信息。 此时,上面两张表中已经保存了我们需要的数据,但它们并不是我们需要的信息,我们需要通过计算才能得到我们需要的信息。 因此,为了获取复权价格这条信息,我们无法避免繁琐的计算过程。 而且,还必须考虑到,如果我们需要的不是复权日K线价格,而是复权后的小时K线价格,还需要把日K线数据转换为小时K线数据,这样的计算过程更加复杂。 在交易策略的实现过程中,如果每次使用复权价格时都要考虑上面的转换和计算过程,那么会使得策略的实现变得复杂,而且容易出错。也会让我们把有限的精力 分散到这些琐碎的计算过程中,而不是集中在策略的实现上。 因此,我们需要一种方法,能够把这些琐碎的计算过程封装起来,使得我们在实现策略时,只需要关注策略本身,而不需要关注这些琐碎的计算过程。 为此,`qteasy`数据管理模块提供了一种标准化的方式,用于从数据表中提取信息。这种方式就是`DataType`对象。 ## DataType对象 `DataType`对象是`QTEASY`数据管理模块中的一个重要对象,它在v1.4版本中正式引入,它封装了标准化的数据处理逻辑,用于从数据表中提取信息。使得用户只要定义好一个`DataType`对象,就不需要再将精力分散在琐碎的数据信息获取计算过程中,而是可以专注于策略的实现。 `qteasy`提供了大量内置预定义的`DataType`对象,用户也可以根据自己的需求自定义`DataType`对象。 举一个简单的例子,假设我们需要获取股票的后复权价格,可以直接使用内置的`DataType`: `close|b`对象,如下所示: ```python # 获取格力电器2025年1月1日到2025年2月1日的后复权收盘价 import qteasy >> > from qteasy.datatypes import DataType >> > close_b = DataType(name='close|b', asset_type='E', freq='D') # 获取数据 >> > close_b.get_data_from_source( datasource=qteasy.QT_DATA_SOURCE, symbols='000651.SZ', starts='2025-02-01', ends='2025-02-27', ) ts_code 000651.SZ trade_date 2025-02-05 9234.85 2025-02-06 9194.82 2025-02-07 9295.95 2025-02-10 9245.38 2025-02-11 9199.03 2025-02-12 9220.10 2025-02-13 9232.74 2025-02-14 9268.56 2025-02-17 9201.14 2025-02-18 9066.29 2025-02-19 8836.63 2025-02-20 8817.67 2025-02-21 8714.43 2025-02-24 8695.47 2025-02-25 8533.23 2025-02-26 8621.72 2025-02-27 8729.18 ```